<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // 1.不定义的话,就是全局变量
    sum = 0;
    var sum = 0;
    console.log(window.sum === sum)  // true

    // 2.var的作用域是 函数作用域,且存在变量提升
    // 2.1 证明是函数作用域
    if (true) {
        var name = 'jack';
    }

    function getAge() {
        var age = 12
        let age2 = 24
    }

    console.log(name) // jack
    getAge();
    // console.log(age) // 报错
    // 2.2 证明存在变量提升
    console.log(area); // undefined
    var area = '北京';

    // 3.let的作用域是 块级作用域,不存在变量提升
    if(true){
        let name2 = 'tom'
    }
    // console.log(name2)   // 报错
    // console.log(age2)    // 报错

    // 3.const 和let基本相同,只是声明的时候必须赋值
</script>
</body>
</html>